The demand for higher performance, microcontroller-based products for use in communication and processing applications continues to increase rapidly. As a result, microcontroller-based product manufacturers are requiring the components and devices within these products to be continually improved to meet the design requirements of a myriad of emerging audio, video and imaging applications.
These microcontroller-based products use various types of processors, for example, general purpose microprocessors for controlling the logic of various digital devices, such as clock radios, microwave ovens, digital video recorders and the like, and special purpose microprocessors, such as math coprocessors for mathematical computations, or digital signal processors used in manipulating various types of information, including sound, imaging and video information. The microcontroller system typically includes a central processing unit (CPU) core for the processing functions, and a bus interface for communication with various memory devices as well as external or other peripheral devices. For the storage of data, the microcontroller system can include various types of memory. For example, the CPU for the microcontroller may include Random Access Memory (RAM) as well as Read-Only Memory (ROM), i.e., programmed memory. In addition, the microcontroller can also include flash memory which can be erased and preprogrammed in blocks instead of being programmed one byte at a time.
For the transmitting and receiving of data between various devices and components, microprocessors and other devices utilize various types of serial interfaces. One such type of interface is the serial peripheral interface (SPI). In addition, for the temporary storage of data, for example to permit the microprocessors to manipulate the data before transferring the data through the SPI to another device, the microprocessors generally utilize one or more buffers. These buffers are integrated with the SPI's to enable the processors to transmit and receive data to and from the buffers as needed in an application.
In embedded microcontroller systems, multiple peripheral devices can be accessed by the microprocessor through a special function register (SFR) bus. Accesses to these SFRs are typically triggered by clock signals. A peripheral can be shut down by stopping the peripheral's clock, however, which causes the SFRs that reside in that peripheral to be inaccessible during the shut down period. Thus, to access the SFRs at any time, a free running clock is required which provides the trigger signals to the SFR. However, in many systems, such as in lower power applications, a free running clock is not provided due to the high power consumption of the free running clock.
Some approaches to reduce power consumption have attempted to use a non-clock signal as a trigger signal. However, these solutions require delay logic so that the SFR address and data buses remain valid while the SFR is reactivated. The delay logic is undesirable as it adds complexity and slowness to the system. Moreover, if the SFR access is in the critical path of a system, delaying the availability of the address and data may require slowing down the system clock frequency.